package MotorMySql;

import java.io.BufferedInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;

import MotorMySql.SQLIException;

public class AccesoDisco {
	public List<Object> leerRegistros(String nombreArchivo) throws SQLIException {

		ArrayList<Object> registros = new ArrayList<Object>();

		/** Usa un bloque 'Try-with-resources' para garantizar que luego de leer
		 * el archivo el stream sea cerrado.
		 */
		try (FileInputStream file = new FileInputStream(nombreArchivo);
				BufferedInputStream buffer = new BufferedInputStream(file);
				ObjectInputStream stream = new ObjectInputStream(buffer);) {
			
			/**Utiliza un ObjectInputStream para simplificar la lectura del archivo.
			 * Una particularidad del mismo es que no brinda ninguna propiedad que
			 * determine si existen datos para seguir leyendo, en lugar de eso lanza un excepcion 
			 * al llegar al fin del archivo.
			 */
			while (true) {
				Object Usuario = stream.readObject();
				registros.add(Usuario);
			}
			
		//Recordar que las excepciones SIEMPRE se deben ordenar de la mas derivada a la mas generica.
		} catch (EOFException eof) {
			// No hay mas registros en el archivo, generalmente capturar una excepcion y no hacer nada
			//es un error, en este caso es correcto no hacer nada.
		} catch (Exception e) {
			throw new SQLIException("Se produjo un error inesperado al intentar leer el archivo");
		}

		return registros;
	}
	

}
